import { Component } from 'vue-demi';

export interface Column {
  prop: string; // 列属性
  label: string; // 列标题
  visible?: boolean; // 列是否可见，默认为true
  width?: number; // 宽度
  minWidth?: number; // 最小宽度
  maxWidth?: number; // 最大宽度
  component?: string; // 自定义组件
  fixed?: boolean | 'left' | 'right'; // 固定列，默认为false
  sortable?: boolean; // 是否可排序
  filterable?: boolean; // 是否可筛选
  formatter?: (row: RowData, column: Column, cellValue: any, index: number) => any; // 格式化函数
  className?: string; // 列的自定义类名
  headerClassName?: string; // 表头单元格的自定义类名
}

// 避免递归定义导致的类型问题
export interface RowData {
  [key: string]: any; // 允许动态属性
  disabled?: boolean; // 是否禁用
  isCheckbox?: boolean; // 是否复选框
  hasChildren?: boolean; // 是否有子项
  expanded?: boolean; // 是否展开
  children?: RowData[]; // 子项
  _rowIndex?: number; // 内部使用的行索引
  _level?: number; // 内部使用的层级
  _parentId?: string; // 内部使用的父级ID
}

// 提示框状态接口定义
export interface TooltipState {
  visible: boolean;
  x: number;
  y: number;
  content: string;
}
